﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DAL;
using BOL;
using System.Data;
using System.IO;
using System.Configuration;
using System.Transactions;
using System.Data.Linq;
using System.ComponentModel;
using UtilityExtensions;

namespace BOL.Compras
{
    public class GetOrdenCompraList
    {

        public GetOrdenCompraList()
        {
            bol = new OrdenCompraBL();
            emp = new EmpleadoBL();
        }

        private OrdenCompraBL bol;
        private EmpleadoBL emp;

        int _count;

        public int Count(int idProveedor,
                            int startRowIndex,
                            int maximumRows,
                            string sortExpression)
                        {
                            return _count;
                        }


       
                /// <summary>
                /// Trae todas las ordenes de compra y gastos, por proveedor
                /// solo las que el empleado tiene acceso por  obra
                /// no trae los anulados
                /// </summary>
                /// <param name="idProveedor"></param>
                /// <param name="startRowIndex"></param>
                /// <param name="maximumRows"></param>
                /// <param name="sortExpression"></param>
                /// <returns></returns>
        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public IEnumerable<OrdenCompraListInfo> Execute(int idProveedor,
                                    int startRowIndex,
                                    int maximumRows,
                                    string sortExpression)
        {
                                                  

            var q = bol.ApplySelect_OrdenCompraListInfo();

            q = q.Where(a => (emp.GetObraAcceso().Contains(a.idObra))
                          & a.idProveedor == idProveedor
                        & a.bitActivo==true);
                        
              _count = q.Count();

            q = bol.ApplySort(q, sortExpression);
            return q.Skip(startRowIndex).Take(maximumRows);
        }
            
         


      
    }
}
